home *** CD-ROM | disk | FTP | other *** search
/ Tiger Disk 13 / Tiger_Disk_013_19xx_Tiger-Crew-Disk_de_Side_B.d64 / lektion 8 (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  10KB  |  266 lines

  1. 1 rem*********************************
  2. 2 rem*----------lektion-8------------*
  3. 3 rem*-------------------------------*
  4. 4 rem*----(w)-by-arno-freisinger-----*
  5. 5 rem*-------------------------------*
  6. 6 rem*--------teachmaster------------*
  7. 7 rem*-------------------------------*
  8. 8 rem*********************************
  9. 10 poke 53280, 11 : poke 53281 , 11 : print "[155]" : poke 2050 ,1
  10. 15 sys 42291 : poke 46 , peek (35) : poke 45 , peek (781) + 2 : clr
  11. 20 print"[147]"tab(15)"teachmaster"
  12. 30 print""tab(09)"(w) by arno freisinger"
  13. 40 print""tab(10)"                    "
  14. 50 for i = 1 to 2000 : next
  15. 60 print"[147]"tab(15)"lektion 8"
  16. 70 for i = 1 to 1000 : next
  17. 80 get a$ : get a$ : get a$
  18. 85 rem*********************************
  19. 90 rem*-------- seite 1 --------------*
  20. 95 rem*********************************
  21. 100 print"[147]nachdem wir in der letzten lektion so"
  22. 110 print"viele befehle kennengelernt hatten,"
  23. 120 print"muessen wir jetzt wieder ein bischen"
  24. 130 print"grundlagenforschung betreiben, aber"
  25. 140 print"keine angst,so schlimm wird es nicht."
  26. 150 print"der mikroprozessor 6510 hat einen "
  27. 160 print"stack, den er nutzt (bei jsr wird die"
  28. 170 print"ruecksprungadresse hinterlegt fuer rts)"
  29. 180 print"und den auch der programmierer (also"
  30. 190 print""tab(14)"taste druecken"
  31. 200 print""tab(18)"-1-"
  32. 210 gosub 250
  33. 220 on a goto 300 , 60
  34. 230 rem********************************
  35. 240 rem*-------- tasten abfrage ------*
  36. 245 rem********************************
  37. 250 get a$ : if a$ = "" then 250
  38. 260 if a$ = "z" then a=2 : goto 280
  39. 270 a = 1
  40. 280 return
  41. 285 rem********************************
  42. 290 rem*--------- seite 2 ------------*
  43. 295 rem********************************
  44. 300 print"[147]sie) nutzen kann. in der letzten"
  45. 310 print"lektion hatten sie bereits zwei befehle"
  46. 320 print"fuer die nutzung des stacks kennen-"
  47. 330 print"gelernt. sie heissen txs und tsx"
  48. 350 print"der stack hat einen zeiger, der die   "
  49. 360 print"byte-position anzeigt. ihn koennen"
  50. 370 print"wir mit diesem befehl txs beeinflussen."
  51. 380 print"er nimmt dann den wert an, der sich im"
  52. 390 print"x-register befindet. mit tsx kann man"
  53. 400 print"ihn auslesen und der zeigerwert befindet"
  54. 410 print""tab(14)"taste druecken"
  55. 420 print""tab(18)"-2-"
  56. 430 gosub 250
  57. 440 on a goto 450 , 100
  58. 450 rem********************************
  59. 460 rem*--------- seite 3 ------------*
  60. 470 rem********************************
  61. 480 print"[147]sich dann im x-register und kann dort"
  62. 490 print"weiter bearbeitet werden. jetzt noch"
  63. 500 print"die restlichen befehle zur stack"
  64. 510 print"bearbeitung. der erste befehl heisst"
  65. 520 print"pha[146] er laedt das aktuelle stack-byte"
  66. 530 print"in den akku, der stackpointer wird"
  67. 540 print"um eins hoch gesetzt. dazu muessen sie"
  68. 550 print"wissen, das beim stack von oben nach"
  69. 560 print"unten gearbeitet wird. d.h. ein byte,"
  70. 570 print"das als erstes in den stack eingegeben"
  71. 590 print""tab(14)"taste druecken"
  72. 600 print""tab(18)"-3-"
  73. 610 gosub 250
  74. 620 on a goto 630 , 300
  75. 630 rem********************************
  76. 640 rem*--------- seite 4 ------------*
  77. 650 rem********************************
  78. 660 print"[147]wird,kommt in die oberste speicherstelle"
  79. 670 print"des stacks. das naechste byte kommt in"
  80. 680 print"die darunterliegende speicherstelle."
  81. 690 print"das heisst also, dass der stapelzeiger"
  82. 700 print"(stackpointer) von oben nach unten "
  83. 710 print"laeuft. adressen, die der mikroprozessor"
  84. 720 print"in den stack ablegt, werden in unser"
  85. 730 print"bekanntes low-byte und hi-byte abgelegt."
  86. 740 print"der naechste befehl lautet php[146]. es wird"
  87. 750 print"das statusregister (das flag) in den"
  88. 780 print""tab(14)"taste druecken"
  89. 790 print""tab(18)"-4-"
  90. 800 gosub 250
  91. 810 on a goto 820 , 450
  92. 820 rem********************************
  93. 830 rem*--------- seite 5 ------------*
  94. 840 rem********************************
  95. 845 print"[147]stack geschrieben. pla[146] laed das aktuel."
  96. 850 print"byte aus dem stack. plp[146] ist das gegen-"
  97. 860 print"teil von php. plp liest das aktuelle   "
  98. 870 print"byte ins statusregister. das waren die"
  99. 880 print"befehle fuer den stack (stapel).jetzt"
  100. 890 print"ein paar anwendungen dazu :"
  101. 900 print"     lda $01   ;speicherstelle 1 in akku"
  102. 910 print"     tax       ;akku ins x-register."
  103. 920 print"     lda #65   ;ascii-code fuer a in a."
  104. 930 print"     pla       ;akku auf stapel."
  105. 950 print""tab(14)"taste druecken"
  106. 960 print""tab(18)"-5-"
  107. 970 gosub 250
  108. 980 on a goto 1000 , 630
  109. 1000 rem*******************************
  110. 1010 rem*-------- seite 6 ------------*
  111. 1020 rem*******************************
  112. 1030 print"[147]     txa      ;x-register in den akku."
  113. 1040 print"     sta $1000;akku nach $1000 (4096)"
  114. 1050 print"              ;schreiben."
  115. 1060 print"     pla      ;akku von stapel holen"
  116. 1070 print"     sta $02  ;akku in speicher.2 schr."
  117. 1090 print"     rts      ;zurueck springen."
  118. 1100 print"dies ist ein beispielprogramm, das"
  119. 1110 print"ihnen die funktionsweise verdeutlichen"
  120. 1120 print""tab(14)"taste druecken"
  121. 1130 print""tab(13)"-6-"
  122. 1140 gosub 250
  123. 1150 on a goto 1160 , 830
  124. 1160 rem*******************************
  125. 1170 rem*-------- seite 7 ------------*
  126. 1180 rem*******************************
  127. 1190 print"[147]soll. jetzt wollen wir etwas ueber die"
  128. 1200 print"byte-verschiebe-befehle kennenlernen."
  129. 1210 print"sie heissen :asl,lsr,rol[146] und ror[146]."
  130. 1220 print"da ein byte aus acht bits besteht,"
  131. 1230 print"kann man auch die bits verschieben,"
  132. 1240 print"dazu sind diese befehle da."
  133. 1250 print"schauen wir uns zuerst doch einmal ein"
  134. 1260 print"byte an : 00000000 byte[146] "
  135. 1270 print"          76543210 bitnummern[146]      "
  136. 1280 print"wenn ein byte einmal angenommen so aus-"
  137. 1290 print"sieht :  00011010 byte[146] "
  138. 1310 print""tab(14)"taste druecken"
  139. 1320 print""tab(18)"-7-"
  140. 1330 gosub 250
  141. 1340 on a goto 1350 , 1000
  142. 1350 rem*******************************
  143. 1360 rem*------- seite 8 -------------*
  144. 1370 rem*******************************
  145. 1380 print"[147]asl[146] verschiebt die bits um eins"
  146. 1390 print"nach links. in das bit 0 kommt eine "
  147. 1400 print"null. das 7. bit wird in das c-flag"
  148. 1410 print"geschoben. das sieht dann so aus :"
  149. 1420 print"ausgangszustand 10010001 byte[146]"
  150. 1430 print"                76543210 bitnummern"
  151. 1440 print"einmal asl durchfuehren."
  152. 1450 print"               00100010 byte[146]"
  153. 1460 print"c-flag=1      76543210 bitnummern"
  154. 1470 print"sehen sie, das 7. bit ist in das c-flag"
  155. 1480 print"geschoben worden und die restlichen"
  156. 1500 print""tab(14)"taste druecken"
  157. 1510 print""tab(18)"-8-"
  158. 1520 gosub 250
  159. 1530 on a goto 1540 , 1160
  160. 1540 rem*******************************
  161. 1550 rem*--------- seite 9 -----------*
  162. 1560 rem*******************************
  163. 1570 print"[147]bits sind eine stelle nach links ver-"
  164. 1580 print"schoben worden. jetzt sehen wir uns"
  165. 1590 print"den naechsten befehl an. er heisst lsr[146]."
  166. 1600 print"lsr verschiebt um ein bit nach rechts."
  167. 1620 print"eine null rueckt in das 7.bit nach und"
  168. 1630 print"das bit 0 wird in das c-flag gefuegt"
  169. 1640 print"sehen wir uns das doch einmal an :"
  170. 1650 print"ausgangszustand : 10001010 b[255]te[146][226]   [224]"
  171. 1660 print"                  76543210 bitnummern"
  172. 1670 print"einmal lsr      : 01000101 byte[146]  "
  173. 1680 print" c-flag = 0      76543210 bitnummern"
  174. 1700 print""tab(14)"taste druecken"
  175. 1710 print""tab(18)"-9-"
  176. 1720 gosub 250
  177. 1730 on a goto 1740 , 1350
  178. 1740 rem*******************************
  179. 1750 rem*-------- seite 10 -----------*
  180. 1760 rem*******************************
  181. 1770 print"[147]diesmal ist die verschiebung genau um-"
  182. 1780 print"gekehrt. der naechste befehl lautet"
  183. 1790 print"rol[146]. er hat die gleiche bedeutung, wie"
  184. 1800 print"asl. rol verschiebt die bits um eins "
  185. 1810 print"nach links. der einzige unterschied"
  186. 1820 print"liegt darin, wie das c-flag und wie"
  187. 1830 print"bits 0 und 7 behandelt werden."
  188. 1840 print"beim verschieben wird zuerst das c-flag"
  189. 1850 print"in das bit 0 geschoben, anschliessend "
  190. 1860 print"wird das 7.bit in das c-flag geschoben."
  191. 1870 print""tab(14)"taste druecken"
  192. 1880 print""tab(17)"-10-"
  193. 1890 gosub 250
  194. 1900 on a goto 1910 , 1540
  195. 1910 rem*******************************
  196. 1920 rem*--------- seite 11 ----------*
  197. 1930 rem*******************************
  198. 1940 print"[147]sehen wir uns das wieder einmal an :"
  199. 1950 print"ausgangszustand : 00100101 byte[146]    "
  200. 1960 print" c-flag = 1      76543210 bitnummern[146]"
  201. 1970 print"einmal rol durchgefuehrt :          "
  202. 1980 print"                  01001011 byte[146]"
  203. 1990 print" c-flag = 0      76543210 bitnummern[146]"
  204. 2000 print"das gegenteil dieses b[255]fehls ist ror[146]"
  205. 2100 print"hier wird das c-flag in das 7.bit"
  206. 2110 print"geschoben und bit 0 wird in das c-flag"
  207. 2120 print"geschoben. sehen wir uns die funktions-"
  208. 2130 print"weise an : "
  209. 2140 print""tab(14)"taste druecken"
  210. 2150 print""tab(17)"-11-"
  211. 2160 gosub 250
  212. 2170 on a goto 2180 , 1750
  213. 2180 rem*******************************
  214. 2190 rem*--------- seite 12 ----------*
  215. 2200 rem*******************************
  216. 2210 print"[147]ausgangszustand : 01010010 byte[146]"
  217. 2220 print" c-flag = 1      76543210 bitnummern[146]"
  218. 2230 print"einmal ror ausgefuehrt :           "
  219. 2240 print"   :              10101001 byte[146]    "
  220. 2250 print" c-flag = 0      76543210 bitnummern[146]"
  221. 2260 print"jetzt wollen wir unser wissen endlich"
  222. 2270 print"einmal anwenden. fuer diese befehle "
  223. 2280 print"wuerde sich eine joystickabfrage eignen."
  224. 2290 print"die speicherstel]e, wo sich die infor-"
  225. 2293 print"mationen ueber den joystick in port 2"
  226. 2295 print"befinden ist die speicherstelle $dc01"
  227. 2300 print""tab(14)"taste druecken"
  228. 2310 print""tab(17)"-12-"
  229. 2320 gosub 250
  230. 2330 on a goto 2340 , 1910
  231. 2340 rem*******************************
  232. 2350 rem*-------- seite 13 -----------*
  233. 2360 rem*******************************
  234. 2370 print"[147] lda $dc01 ;joy-informationen laden"
  235. 2380 print" ror       ;um ein bit nach rechts   "
  236. 2390 print" bcc oben  ;wenn c-fl.=0,dann nach oben."
  237. 2400 print" ror       ;um ein bit nach rechts.   "
  238. 2410 print" bcc unten ;wenn![227]-f.=0,dann nach unten."
  239. 2420 print" ror       ;um ein bit nach rechts."
  240. 2430 print" bcc links ;wenn c=0, dann nach links."
  241. 2440 print" ror       ;um ein bit nach rechts."
  242. 2450 print" bcc rechts;wenn c=0, dann nach rechts."
  243. 2460 print" ror       ;um ein bit nach rechts.
  244. 2470 [153]" bcc fire  ;wenn c-f.=0,dann nach fire."
  245. 2480 [153]" rts       ;zurueck springen.
  246. 2490 printtab(14)"taste druecken"
  247. 2500 printtab(17)"-13-"
  248. 2510 gosub 250
  249. 2520 on a goto 2530 , 2200
  250. 2530 rem*******************************
  251. 2540 rem*--------- seite 14 ----------*
  252. 2550 rem*******************************
  253. 2560 print"[147]dies ist die allerschnellste joystick-"
  254. 2570 print"abfrage, die ueberhaupt moeglich ist !"
  255. 2580 print"geben sie wieder ihr geraet ein."
  256. 2590 a$ = "" : input"d[146] oder f[146]"; a$
  257. 2600 if a$ = "" then end
  258. 2610 if a$ = "d" then f=1 : goto 2700
  259. 2620 if a$ = "f" then f=8 : goto 2700
  260. 2625 if a$ = "z" then 2340
  261. 2630 goto 2590
  262. 2650 rem*******************************
  263. 2660 rem*------- lade rotine ---------*
  264. 2670 rem*******************************
  265. 2700 poke 2,f: poke 46 , 8 : poke 45,3 : poke 2050 ,0 :load"lektion 9" ,peek(2)
  266.